/**
 * 音的记法：
 *          普通音：C3、C6
 *          升  音：以#开始，如#C4、#D6
 *          降  音：以!开始，如!C4
 */
type PianoSymbol =
    // #region
    /* 第一组 */
    | 'A0'
    | 'B0'
    | '#A0'
    | '!B0'
    | '!C0'
    /* 第二组 */
    | 'C1'
    | 'D1'
    | 'E1'
    | 'F1'
    | 'G1'
    | 'A1'
    | 'B1'
    | '#C1'
    | '#D1'
    | '#E1'
    | '#F1'
    | '#G1'
    | '#A1'
    | '#B1'
    | '!C1'
    | '!D1'
    | '!E1'
    | '!F1'
    | '!G1'
    | '!A1'
    | '!B1'
    /* 第三组 */
    | 'C2'
    | 'D2'
    | 'E2'
    | 'F2'
    | 'G2'
    | 'A2'
    | 'B2'
    | '#C2'
    | '#D2'
    | '#E2'
    | '#F2'
    | '#G2'
    | '#A2'
    | '#B2'
    | '!C2'
    | '!D2'
    | '!E2'
    | '!F2'
    | '!G2'
    | '!A2'
    | '!B2'
    /* 第四组 */
    | 'C3'
    | 'D3'
    | 'E3'
    | 'F3'
    | 'G3'
    | 'A3'
    | 'B3'
    | '#C3'
    | '#D3'
    | '#E3'
    | '#F3'
    | '#G3'
    | '#A3'
    | '#B3'
    | '!C3'
    | '!D3'
    | '!E3'
    | '!F3'
    | '!G3'
    | '!A3'
    | '!B3'
    /* 第五组 */
    | 'C4'
    | 'D4'
    | 'E4'
    | 'F4'
    | 'G4'
    | 'A4'
    | 'B4'
    | '#C4'
    | '#D4'
    | '#E4'
    | '#F4'
    | '#G4'
    | '#A4'
    | '#B4'
    | '!C4'
    | '!D4'
    | '!E4'
    | '!F4'
    | '!G4'
    | '!A4'
    | '!B4'
    /* 第六组 */
    | 'C5'
    | 'D5'
    | 'E5'
    | 'F5'
    | 'G5'
    | 'A5'
    | 'B5'
    | '#C5'
    | '#D5'
    | '#E5'
    | '#F5'
    | '#G5'
    | '#A5'
    | '#B5'
    | '!C5'
    | '!D5'
    | '!E5'
    | '!F5'
    | '!G5'
    | '!A5'
    | '!B5'
    /* 第七组 */
    | 'C6'
    | 'D6'
    | 'E6'
    | 'F6'
    | 'G6'
    | 'A6'
    | 'B6'
    | '#C6'
    | '#D6'
    | '#E6'
    | '#F6'
    | '#G6'
    | '#A6'
    | '#B6'
    | '!C6'
    | '!D6'
    | '!E6'
    | '!F6'
    | '!G6'
    | '!A6'
    | '!B6'
    /* 第八组 */
    | 'C7'
    | 'D7'
    | 'E7'
    | 'F7'
    | 'G7'
    | 'A7'
    | 'B7'
    | '#C7'
    | '#D7'
    | '#E7'
    | '#F7'
    | '#G7'
    | '#A7'
    | '#B7'
    | '!C7'
    | '!D7'
    | '!E7'
    | '!F7'
    | '!G7'
    | '!A7'
    | '!B7'
    /* 第九组 */
    | 'C8'
    | '#B8';
    // #endregion

interface PianoSymbolMapping {
    [key: string]: number;
};


export {
    type PianoSymbol,
    type PianoSymbolMapping,
};